package com.lms.net.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * @Author: 李孟帅
 * @CreateTime: 2021/6/9$ 12:32$
 * @Description: TODO
 */
public class UDPReceiver {
    public static void main(String[] args) throws IOException {
        // 创建一个DatagramSocket对象，准备在9999端口接受数据
        DatagramSocket socket = new DatagramSocket(9999);
        // 构建一个DatagramPacket对象，准备接受数据，一个数据包最大64K
        byte[] buf = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf, 0, buf.length);
        // 调用接收方法 将通过网络传输的DatagramPacket对象填充到packet对象，
        // 当有数据到达时就会接收数据，没有的话阻塞等待
        System.out.println("等待接收数据。。。。");
        socket.receive(packet);
        // 将packet进行拆包 取出数据,
        int length = packet.getLength();
        byte[] data = packet.getData();
        System.out.println(new String(data, 0, length));

        // 回复消息
        data = "好的。明天见".getBytes();
        packet = new DatagramPacket(data, data.length, InetAddress.getByName("127.0.0.1"), 9998);
        socket.send(packet);

        // 关闭资源
        socket.close();
        System.out.println("A端退出");

    }
}
